// 创建用户相关小仓库
import { defineStore } from "pinia"
import { reqLogin } from '@/api/user'
import { setItem, getItem, delItem } from '@/utils/storage.js'
// 引入路由（常量路由）
import { constantRoute } from '@/router/routes'

// 创建
let useUserStore = defineStore('User', { // 仓库采用的是选择式api的写法
    // 小仓库存储数据的地方
    state: () => {
        return {
            token: getItem('TOKEN'),
            menuRoutes: constantRoute,
            username: '湖北浪晴网络科技有限公司',
            avatar: 'https://open.oppomobile.com/oneoppo/static/images/team-manager.0f97c12.png'
        }
    },
    // 异步 | 逻辑 的地方
    actions: {
        // 用户登录方法
        async userLogin(data){
            let res = await reqLogin(data)
            if(res.code == 1){
                this.token = res.token
                setItem('TOKEN', res.token)
                setTimeout(() => {
                    window.location.reload() // 强制刷新页面，让 Pinia 获取最新 token，Pinia 初始化早于 localStorage 写入
                }, 1000)
                return 'ok' // 能保证当前 async 函数返回一个成功的 promise
            }else{
                return Promise.reject(new Error(res.msg))
            }
        },
        // 用户退出登录
        userLogout(){
            this.token = ''
            delItem('TOKEN')
        }
    },
    // 计算属性
    getters: {

    }
})
// 对外暴露
export default useUserStore